您现在的位置:首页 > 学术研究 > 读书笔记 > VC中的网络编程
VC中的网络编程
[发布时间:2004-08-02  阅读次数: 5672]
VC中的网络编程,可以看成是基于Socket的编程。Socket是一种网络编程接口,能适用于不同的网络协议,如TCP/IP、APPLE TALK等。微软在开发windows时也推出了windows下的网络编程接口——windows socket。这样程序员可以在windows下方便的编写基于图形界面的网络程序。

简单的说,socket接口是TCP/IP网络的API,也就是说,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。今天,socket接口是TCP/IP网络最为通用的API之一。

对于面向连接的和面向无连接的客户机/服务器模型,其编程流程图如下:

WinSock编程模型:

包括以下步骤:

1. 建立socket。可以看成是socket的初始化。

2. 配置一个socket。配置信息主要包括:本地和远地机的IP地址、本地和远地进程的协议端口、连接上使用的协议。

3. 连接一个socket。程序调用socket和connect函数后,内部数据结构就包含了网络通信必须拥有的五种信息:连接上使用的协议,本地主机的IP地址,本地进程的地协议端口,远地主机的IP地址,远地进程的协议端口。

4. 使用一个socket。用于传送数据和接收数据。

5. 程序结束,删除socket。

MFC中提供了两个Socket类:CAsyncSocket类和CSocket类,前者封装了Windows Sockets API,后者为前者派生的高级抽象,支持同步操作。可以单独使用CSocket类,但通常是和CSocketFile类一起使用。

CAsyncSocket类在很低级别上封装了Windows Sockets API,该类使我们可以使用面向对象的方式来进行Sockets编程,而且可以非常方便的调用其它MFC对象。不过这个类要求编程者对Sockets编程有较深入的了解,可能需要编程者编写低层函数来进行通信操作。而CSocket类提供了一个高级的Socket支持,它运用了MFC的序列化类来提供和传输Socket对象。既由CArchive管理了很多低层的功能,使得程序员不需要考虑网络字节顺序和字符串的转换问题,所以编程的难度得到了降低。但是由于使用CSocket和CSocketFile类运用了MFC的序列化类进行数据传输,所以Client和Server双方程序都必须用MFC来编程,或者另一方的程序能够识别MFC序列化协议。

最后一点需要注意的是:CAsyncSocket类用DoCallBack函数处理MFC消息,当一个网络事件发生时,DoCallBack函数按网络事件类型:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分别调用OnReceive、OnSend、OnAccept、OnConnect函数。由于MFC把这些事件处理函数定义为虚函数,所以要生成一个新的C++类,以重载这些函数。

首页上一页下一页尾页当前为1/1页